Skip to main content

nexus\api\event/
extras.rs

1//! [Unofficial Extras](https://github.com/Krappa322/arcdps_unofficial_extras_releases) bridge events.
2
3use super::Event;
4use unofficial_extras::{keybinds::RawKeybindChange, user::to_user_info_iter};
5
6pub use unofficial_extras::*;
7
8/// Unofficial Extras squad update event.
9pub const EXTRAS_SQUAD_UPDATE: Event<SquadUpdate> =
10    unsafe { Event::new("EV_UNOFFICIAL_EXTRAS_SQUAD_UPDATE") };
11
12/// Unofficial Extras squad update payload.
13#[derive(Debug, Clone)]
14#[repr(C)]
15pub struct SquadUpdate {
16    pub users: *const UserInfo,
17    pub count: u64,
18}
19
20impl SquadUpdate {
21    #[inline]
22    pub fn iter(&self) -> UserInfoIter<'_> {
23        unsafe { to_user_info_iter(self.users, self.count) }
24    }
25}
26
27/// Unofficial Extras language changed event.
28pub const LANGUAGE_CHANGED: Event<Language> =
29    unsafe { Event::new("EV_UNOFFICIAL_EXTRAS_LANGUAGE_CHANGED") };
30
31/// Unofficial Extras keybind changed event.
32pub const KEYBIND_CHANGED: Event<RawKeybindChange> =
33    unsafe { Event::new("EV_UNOFFICIAL_EXTRAS_KEYBIND_CHANGED") };
34
35/// Unofficial Extras chat message event.
36pub const CHAT_MESSAGE: Event<SquadMessage> =
37    unsafe { Event::new("EV_UNOFFICIAL_EXTRAS_CHAT_MESSAGE") };